﻿using SIIE_ERP.Codigo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIIE_ERP.BaseDatos.Bancos.Catalogos
{
    public class dbo_Fact_Saldos_Bancos
    {
        #region Propiedades

        private string _RFC;
        private string _Usuario;

        #endregion
        
        #region Constructores

        public dbo_Fact_Saldos_Bancos(string RFC, string Usuario)
        {
            this._RFC = RFC;
            this._Usuario = Usuario;
        }

        #endregion
        
        #region INSERT

        public Respuesta InsertUpdate_Fact_Existencias(

            double Saldo, 
            int Id_Cuenta
        )
        {
            if (Get_Fact_Saldos_Individual(Id_Cuenta).Rows.Count == 0)
            {
                try
                {
                    string Query = @"INSERT INTO dbo_Fact_Saldos_Bancos
                                 (
                                    Id_Saldo,
                                    RFC,
                                    Id_Cuenta,
                                    Saldo,                                                                    
                                    Fecha_Alta,                                                                 
                                    Usuario_Alta,
                                    Fecha_Mantto,
                                    Usuario_Mantto
                                 )
                                 VALUES
                                 (
                                    IIF(DCount('*', 'dbo_Fact_Saldos_Bancos') = 0, 1, DMax('Id_Saldo', 'dbo_Fact_Saldos_Bancos') + 1),
                                    '@@RFC',
                                    @@Id_Cuenta,
                                    @@Saldo,                                    
                                    NOW(),
                                    '@@Usuario_Alta'
                                    NOW(),
                                    '@@Usuario_Mantto'
                                 )";

                    Query = Query.Replace("@@RFC", this._RFC);
                    Query = Query.Replace("@@Id_Cuenta", Id_Cuenta.ToString());
                    Query = Query.Replace("@@Saldo", Saldo.ToString());
                    Query = Query.Replace("@@Usuario_Alta", this._Usuario);
                    Query = Query.Replace("@@Usuario_Mantto", this._Usuario);

                    return SrvDB.ExecuteQuery_Insert(Query);
                }
                catch (Exception Ex)
                {
                    return new Respuesta(2, Ex.Message);
                }
            }
            else
            {
                return Update_Fact_Existencias(Saldo, Id_Cuenta);
            }
        }
    

        #endregion

        #region UPDATE

        private Respuesta Update_Fact_Existencias(

            double Saldo,
            int Id_Cuenta           
        )
        {
            try
            {
                string Query = @"UPDATE dbo_Fact_Saldos_Bancos SET
                                           
                                    Saldo = @@Saldo,                                    
                                    Fecha_Mantto = NOW(),
                                    Usuario_Mantto = '@@Usuario_Mantto'

                                 WHERE 
                                    Id_Cuenta = @@Id_Cuenta";

                Query = Query.Replace("@@Id_Cuenta", Id_Cuenta.ToString());
                Query = Query.Replace("@@Saldo", Saldo.ToString());                
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);              

                return SrvDB.ExecuteQuery_Update(Query);
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region SELECT

        public DataTable Get_Fact_Saldos()
        {

            string Query = "SELECT * FROM Fact_Saldos_Bancos WHERE RFC = '@@RFC'";
            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Fact_Saldos_Individual(int Id_Cuenta)
        {

            string Query = "SELECT * FROM Fact_Saldos_Bancos WHERE Id_Cuenta = @@Id_Cuenta";
            Query = Query.Replace("@@Id_Cuenta", Id_Cuenta.ToString());

            return SrvDB.ExecuteQuery_Get(Query);
        }

        #endregion
    }
}
